<?php


namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;
use think\facade\Cache;
use think\facade\Log;

/**
 * 发送系统预警订阅,十分钟一次.
 */
class AbnormalSend extends Command
{
    protected function configure()
    {
        $this->setName('abnormalsend')
            ->setDescription('abnormal send message');
    }

    protected function execute(Input $input, Output $output)
    {

        //系统心跳
        try {
            app()->invoke(['app\msgapi\service\HuihuaSensitiveService','sendSystemHeartbeat']);
            Log::write('[发送系统心跳]任务执行成功','info');
            $output->writeln('[发送系统心跳]任务执行成功');
        }catch (\Exception $e)
        {
            Log::write('[发送系统心跳]任务执行失败,'.$e->getMessage().$e->getLine(),'error');
            $output->writeln('[发送系统心跳]任务执行失败,'.$e->getMessage().$e->getLine());
        }

//        Cache::set('is_abnormal_sensitive',false,3600);
        //做重复任务校验。即执行前校验执行标志，执行过程中设置执行标志，执行完毕后恢复标志。
        //系统硬盘预警提醒
        if(Cache::get('is_abnormal_sensitive') !== true || !Cache::get('is_abnormal_sensitive')){
            try {
                $abnormalSensitive = app()->invoke(['app\msgapi\service\HuihuaSensitiveService','sendSystemAbnormalSensitive']);
                $abnormalSensitive ? Log::write('[发送系统预警订阅]任务执行成功','info') : Log::write('[发送系统预警订阅]任务执行失败','error');
                $abnormalSensitive ? $output->writeln('[发送系统预警订阅]任务执行成功') : $output->writeln('[发送系统预警订阅]任务执行失败');
            }catch (\Exception $e){
                Cache::set('is_abnormal_sensitive',false,(strtotime(date("Y-m-d 09:00:00",strtotime("+1 day")))-time()));
                Log::write('[发送系统预警订阅]任务执行失败,'.$e->getMessage().$e->getLine(),'error');
                $output->writeln('[发送系统预警订阅]任务执行失败,'.$e->getMessage().$e->getLine());
            }
        }else{
            Log::write('[发送系统预警订阅]程序执行中或已被触发,请等待执行完成或等24小时后自动解除','error');
            $output->writeln('[发送系统预警订阅]程序执行中或已被触发,请等待执行完成或等24小时后自动解除');
        }

//        Cache::set('is_remain_days',false,3600);
        //做重复任务校验。即执行前校验执行标志，执行过程中设置执行标志，执行完毕后恢复标志。
        //会话存档服务到期订阅
        if(Cache::get('is_remain_days') !== true || !Cache::get('is_remain_days')){
            try {
                $serviceRemainDays = app()->invoke(['app\msgapi\service\HuihuaSensitiveService','sendServiceRemainDays']);
                $serviceRemainDays ? Log::write('[发送会话存档服务到期订阅]任务执行成功','info') : Log::write('[发送会话存档服务到期订阅]任务执行失败','error');
                $serviceRemainDays ? $output->writeln('[发送会话存档服务到期订阅]任务执行成功') : $output->writeln('[发送会话存档服务到期订阅]任务执行失败');
            }catch (\Exception $e){
                Cache::set('is_remain_days',false,(strtotime(date("Y-m-d 09:00:00",strtotime("+1 day")))-time()));
                Log::write('[发送会话存档服务到期订阅]任务执行失败,'.$e->getMessage().$e->getLine(),'error');
                $output->writeln('[发送会话存档服务到期订阅]任务执行失败,'.$e->getMessage().$e->getLine());
            }
        }else{
            Log::write('[发送会话存档服务到期订阅]程序执行中或已被触发,请等待执行完成或等24小时后自动解除','error');
            $output->writeln('[发送会话存档服务到期订阅]程序执行中或已被触发,请等待执行完成或等24小时后自动解除');
        }

    }

}